package com.jcyang.eshop.cart.domain;

import java.util.Date;
import java.util.List;

import com.jcyang.eshop.common.util.BeanCopierUtils;
import com.jcyang.eshop.promotion.domain.PromotionActivityDTO;
import lombok.Data;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


/**
 * 购物车条目DTO类
 *
 * @author jcyang
 */
@Data
public class ShoppingCartItemDTO {

    private static final Logger logger = LoggerFactory.getLogger(ShoppingCartItemDTO.class);

    /**
     * id
     */
    private Long id;
    /**
     * 购物车id
     */
    private Long shoppingCartId;
    /**
     * 商品sku id
     */
    private Long goodsSkuId;
    /**
     * 商品sku编号
     */
    private String goodsSkuCode;
    /**
     * 商品名称
     */
    private String goodsName;
    /**
     * 销售属性
     */
    private String saleProperties;
    /**
     * 商品sku售价
     */
    private Double salePrice;
    /**
     * 商品毛重
     */
    private Double grossWeight;
    /**
     * 商品长度
     */
    private Double goodsLength;
    /**
     * 商品宽度
     */
    private Double goodsWidth;
    /**
     * 商品高度
     */
    private Double goodsHeight;
    /**
     * 商品sku的销售库存
     */
    private Long saleStockQuantity;
    /**
     * 商品id
     */
    private Long goodsId;
    /**
     * 购买数量
     */
    private Long purchaseQuantity;
    /**
     * 促销活动集合
     */
    private List<PromotionActivityDTO> promotionActivityDTOs;
    /**
     * 购物车条目的创建时间
     */
    private Date gmtCreate;
    /**
     * 购物车条目的修改时间
     */
    private Date gmtModified;


    public <T> T clone(Class<T> clazz) {
        T target = null;
        try {
            target = clazz.newInstance();
            BeanCopierUtils.copyProperties(this, target);
        } catch (Exception e) {
            logger.error("error", e);
            return null;
        }
        return target;
    }

}
